#字符串通过format()方法进行格式化处理
#str.format()：str是指字符串实例对象，常用格式为：‘ ’.format()
"""
<	左对齐，对于大部分对象时为默认
>	右对齐，对于数字时为默认
=	数据右对齐，同时将符号放置在填充内容的最左侧，该选项只对数字类型有效
^	数据居中，此选项需和 width 参数一起使用
"""

print("my name is {},i am {} years old,my weight is {}.".format("Tom",8,"80kg"))
#my name is Tom,i am 8 years old,my weight is 80kg.

#通过下标对应
print("my name is {0},i am {1} years old,i love {0}.".format("Tom",8))
#my name is Tom,i am 8 years old,i love Tom.

name='Tom'
print("my name is {names},i am {age} years old,i love {names}.".format(names=name,age=10))

#需要注意，混合使用时，命名参数必须写道最后
print("my name is {name},i am {} years old,i love {name}.".format(10,"Tom",8,name='Peter'))

#列表方式，字典跟类一样
b=['Tom','Peter']
c=[8,10]
print("my name is {a[0]}, i love {a[1]}, we are {d[1]} years old.".format(a=b,d=c))
print("my name is {0[0]}, i love {0[1]}, we are {1[1]} years old.".format(b,c))
print("my name is {0}, i love {1}, we are {3} years old.".format(*b,*c))
#一样的结果：my name is Tom, i love Peter, we are 10 years old.


#字符串格式化
#{:填充，对齐，宽度}
print("{:<}!".format("hello word"))      #左对齐
print("{:<20}!".format("hello word"))    #左对齐，宽度20，默认填充空格，<可省略
print("{:0<20}!".format("hello word"))   #左对齐，宽度20，填充0
print("{:*<20}!".format("hello word"))   #左对齐，宽度20，填充*
'''
hello word!
hello word          !
hello word0000000000!
hello word**********!
'''
print("{:^}!".format("hello word"))      #居中对齐
print("{:^20}!".format("hello word"))    #居中对齐，宽度20，默认填充空格
print("{:0^20}!".format("hello word"))   #居中对齐，宽度20，填充0
print("{:*^20}!".format("hello word"))   #居中对齐，宽度20，填充*
'''
hello word!
     hello word     !
00000hello word00000!
*****hello word*****!
'''

#处理数字格式
# 浮点数小数部分处理
print("π保留四位小数：{:.4f}".format(3.1415926))  # π保留四位小数：3.1416
# 字符串截取
print("取字符串前四位：{:.4}".format('hello'))  # 取字符串前四位：hell
# 给数字加千位符
print("给数字加千位符：{:,}".format(646545314))  # 给数字加千位符：646,545,314
# 十进制转化为二进制
print("二进制转化：{:#b}".format(16))  # 二进制转化：0b10000
# 十进制转化为八进制
print("八进制转化：{:#o}".format(16))  # 八进制转化：0o20
# 十进制转化为十六进制
print("十六进制转化：{:#x}".format(16))  # 十六进制转化：0x10
# 使用=使数字右对齐
print("数字右对齐：{:*=10}".format(16))  # 数字右对齐：********16



#应用
for i in range(1,15,2):
    print("{:^15}".format(i*'*'))